#include <iostream>
#include <cstdio>

char s[10][10];

bool vis[10][10];   // 用来标记是否被访问
bool f;

bool in(int x, int y) {
    return 0 <= x && x < 10 && 0 <= y && y < 9;
}

//                 P1      P2      P3       P4        P5       P6        P7        P8
int dir[8][2] = {{2, 1}, {1, 2}, {-1, 2}, {-2, 1}, {-2, -1}, {-1, -2}, {1, -2}, {2, -1}};
void dfs(int x, int y) {
    vis[x][y] = true;

    if(f) {   // 只需要找到一条路即可
        return ;
    }

    if('T' == s[x][y]) {
        f = true;    // 找到正确点
        return;
    }

    for(int i = 0; i < 8; i++) {
        int tx = x + dir[i][0];
        int ty = y + dir[i][1];

        if(in(tx, ty) && s[tx][ty] != '#' && !vis[tx][ty]) {
            dfs(tx, ty);
        }
    }
    // 如果要找到所有可行解，则需要在次数取消标记
}


int main()
{
    freopen("chess.in", "r", stdin);
    freopen("chess.out", "w", stdout);

    int x, y;

    for(int i = 0; i < 10; i++) {
        scanf("%s", s[i]);
    }

    // 寻找起始点
    for(int i = 0; i < 10; i++) {
        for(int j = 0; j < 9; j++) {
            if(s[i][j] == 'S') {
                x = i;
                y = j;
            }
        }
    }

    dfs(x, y);

    if(f) {
        printf("Yes\n");
    } else {
        printf("No\n");
    }

    return 0;
}

